OnesLike
对输出数组的所有元素填充数值 1。对于复数类型,实部填充 1.0,虚部填充 0.0。
\[\text{对于实数类型:}\quad output_i = 1\]
\[\text{对于复数类型:}\quad output_i = 1 + 0i\]
- 输入:
output - 待填充的目标内存地址。
length - 处理的元素个数(对于复数类型,指复数的个数)。
core_mask(int, 可选) - 核掩码(仅适用于共享存储版本)。
- 输出:
output - 填充完成后的结果地址。
- 支持平台:
FT78NEMT7004
备注
FT78NE 支持 int8, int16, int32, fp32, fp64, cplx64, cplx128
MT7004 支持 int16, int32, fp16, fp32, cplx64
复数类型(cplx64 / cplx128)在内存中以连续的 [实部, 虚部] 形式存储,OnesLike 将其设置为 [1.0, 0.0]。
共享存储版本在内部使用 DMA 加速和“加倍拷贝法”以提高填充效率。
共享存储版本:
-
void i8_ones_like_s(int8_t *output, int length, int core_mask)
-
void i16_ones_like_s(int16_t *output, int length, int core_mask)
-
void i32_ones_like_s(int32_t *output, int length, int core_mask)
-
void hp_ones_like_s(half *output, int length, int core_mask)
-
void fp_ones_like_s(float *output, int length, int core_mask)
-
void dp_ones_like_s(double *output, int length, int core_mask)
-
void c64_ones_like_s(float *output, int length, int core_mask)
-
void c128_ones_like_s(double *output, int length, int core_mask)
C调用示例:
1//FT78NE示例(共享存储) 2#include <stdio.h> 3#include "78NE/utils.h" 4 5int main(int argc, char* argv[]) { 6 float *output = (float *)0xB0000000; // 输出在 DDR 空间 7 int length = 960001; 8 int core_mask = 0x0B; // 使用核心 0, 1, 3 9 fp_ones_like_s(output, length, core_mask); 10 return 0; 11}
私有存储版本:
-
void i8_ones_like_p(int8_t *output, int length)
-
void i16_ones_like_p(int16_t *output, int length)
-
void i32_ones_like_p(int32_t *output, int length)
-
void hp_ones_like_p(half *output, int length)
-
void fp_ones_like_p(float *output, int length)
-
void dp_ones_like_p(double *output, int length)
-
void c64_ones_like_p(float *output, int length)
-
void c128_ones_like_p(double *output, int length)
C调用示例:
1//MT7004 示例(私有存储) 2#include <stdio.h> 3 4int main(int argc, char* argv[]) { 5 float *output = (float *)0x10002000; 6 int length = 1024; 7 fp_ones_like_p(output, length); 8 return 0; 9}